import axios from 'axios'
import { ElMessage } from 'element-plus'

// 创建axios实例
const api = axios.create({
  baseURL: '/api',
  timeout: 30000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器
api.interceptors.request.use(
  config => {
    console.log('发送请求:', config.method?.toUpperCase(), config.url)
    return config
  },
  error => {
    console.error('请求错误:', error)
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  response => {
    console.log('收到响应:', response.status, response.config.url)
    return response.data
  },
  error => {
    console.error('响应错误:', error)
    
    let message = '网络错误，请稍后重试'
    
    if (error.response) {
      const { status, data } = error.response
      
      switch (status) {
        case 400:
          message = data.message || '请求参数错误'
          break
        case 401:
          message = '未授权访问'
          break
        case 403:
          message = '禁止访问'
          break
        case 404:
          message = '请求的资源不存在'
          break
        case 500:
          message = data.message || '服务器内部错误'
          break
        default:
          message = data.message || `请求失败 (${status})`
      }
    } else if (error.code === 'ECONNABORTED') {
      message = '请求超时，请稍后重试'
    } else if (error.message.includes('Network Error')) {
      message = '网络连接失败，请检查网络设置'
    }
    
    ElMessage.error(message)
    return Promise.reject(error)
  }
)

/**
 * 简历分析API
 */
export const resumeAPI = {
  /**
   * 分析简历
   * @param {string} resumeText 简历文本
   * @param {string} industry 目标行业
   * @returns {Promise} 分析结果
   */
  analyze(resumeText, industry = 'technology') {
    return api.post('/resume/analyze', {
      resumeText: resumeText,
      industry: industry
    })
  },

  /**
   * 健康检查
   * @returns {Promise} 服务状态
   */
  healthCheck() {
    return api.get('/resume/health')
  },

  /**
   * 获取API信息
   * @returns {Promise} API信息
   */
  getInfo() {
    return api.get('/resume/info')
  }
}

export default api